<default>[]</default>
<_summary>Uuids of extensions to disable</_summary>
<_description>
- GNOME Shell extensions have a uuid property;
- this key lists extensions which should not be loaded.
+ GNOME Shell extensions have a uuid property; this key lists extensions
+ which should not be loaded. This setting overrides enabled-extensions
+ for extensions that appear in both lists.
+ </_description>
+ </key>
+ <key name="enabled-extensions" type="as">
+ <default>[]</default>
+ <_summary>Uuids of extensions to enable</_summary>
+ <_description>
+ GNOME Shell extensions have a uuid property; this key lists extensions
+ which should be loaded. disabled-extensions overrides this setting for
+ extensions that appear in both lists.
</_description>
</key>
<key name="enable-app-monitoring" type="b">
const extensionMeta = {};
// Maps uuid -> importer object (extension directory tree)
const extensions = {};
-// Array of uuids
+// Arrays of uuids
var disabledExtensions;
+var enabledExtensions;
// GFile for user extensions
var userExtensionsDir = null;
}
disabledExtensions = global.settings.get_strv('disabled-extensions', -1);
+ enabledExtensions = global.settings.get_strv('enabled-extensions', -1);
}
function _loadExtensionsIn(dir, type) {
if (fileType != Gio.FileType.DIRECTORY)
continue;
let name = info.get_name();
- let enabled = disabledExtensions.indexOf(name) < 0;
+ // Enable all but disabled extensions if enabledExtensions is not set.
+ // If it is set, enable one those, except they are disabled as well.
+ let enabled = (enabledExtensions.length == 0 || enabledExtensions.indexOf(name) >= 0)
+ && disabledExtensions.indexOf(name) < 0;
let child = dir.get_child(name);
loadExtension(child, enabled, type);
}